Media applications, such as video games, typically require both a read only memory (ROM) and a random access memory (RAM). All of the data that is needed to run the media application is stored on the ROM, but during the execution of the media application, portions of the data from the ROM may be stored in the RAM so they can be accessed faster and more efficiently. The information that is stored in the RAM may also include all of the state information. The state information includes all of the information that is needed to run the media title from a certain point in its execution. By way of example, the state information may include data that defines the state of every component of a client device platform, such as a gaming console or computer, that is being used to execute and display the media application. By way of example, and not by way of limitation, the state information may include the information regarding the state of a CPU, GPU, memory, register values, program counter value, programmable DMA state, buffered data for the DMA, audio chip state, and CD-ROM state. Typically, the amount of data needed to sufficiently define the present state of a media application is relatively large. For example, in a video game there may be approximately 8 GB of data stored in the RAM that represents the complete set of state information.
Previously, the large amount of data needed to adequately define the state information was not a problem because the data was never saved or transferred from the RAM. However, there is a growing need for the ability to transfer the state information. For example, the state information may sometimes be transferred over a network to a cloud based server, e.g., during cloud-based emulation of software titles. In these situations, it may not be practical to transfer several gigabytes of data. Alternatively, there are needs for saving the state information for subsequent uses locally. For example, when a gaming console is put into a power saving “sleep” mode it may not be practical to maintain the entire contents of the RAM in order to resume the gameplay from the present location.
As such, there is a need in the art for systems and apparatuses that allow for the state information to be compressed into a less data intensive format. It is within this context that aspects of the present disclosure arise.